package com.sse.lb.colas;

/**
 * Interfaz que define el comportamiento del manejador de 
 * colas para el balanceo de carga.
 * @author Paul
 *
 */
public interface ILBManejadorColas {
	
	/**
	 * Permite encolar de manera asincrona una trama para procesamiento.
	 * @param data 
	 */
	public void encolarTramaAsincrona(byte data[]);
	
	/**
	 * Encola una trama con alta prioridad, queda en la cabeza  de la cola.
	 * @param data Arreglo de bytes con la informacion
	 */
	public void encolarTramaAsincronaPrioridad(byte data[]);
	
	
	/**
	 * Obtiene el primer elemento en la cola de la eventos.
	 * @return byte[] con el evento en la cabeza de la cola.
	 */
	public byte[] obtenerTrama();
	
	/**
	 * Agrega una trama a un sistema central.
	 * @param idSistema 
	 * @param trama
	 */
	public void agregarTramaASistema(Long idSistema, byte[] trama);
	
	/**
	 * Remueve la asociacion de una trama y un sistema central.
	 * @param idSistema
	 * @param trama
	 */
	public void removerTramaSistema(Long idSistema, byte[] trama);
	
	
	
	public void finalizarManejador();
	


}
